﻿var System = function () {
    toastr.options = {
        "closeButton": false,
        "debug": false,
        "positionClass": "toast-top-center",
        "onclick": null,
        "showDuration": "500",
        "hideDuration": "500",
        "timeOut": "2000",
        "extendedTimeOut": "1000",
        "showEasing": "swing",
        "hideEasing": "linear",
        "showMethod": "fadeIn",
        "hideMethod": "fadeOut"
    };
    // 初始化菜单
    var initMenu = function () {
        var menu = $("#menu");
        var htmlbody = $("#htmlbody");

        menu
            .delegate("a", "click", function (e) {
                e.preventDefault();

                htmlbody
                    .empty()
                    .append('<img src="/assets/global/img/loading-spinner-grey.gif" class="loading">' +
                            '<span>&nbsp;&nbsp;页面载入中…… </span>')
                    .load(this.href, { ajax: true, redirect: true }, function () {

                    });

                $(this)
                    .parent().addClass("active")
                    .siblings().removeClass("active");
            })
            .find("a:eq(0)").trigger("click");
    };

    // 初始化菜单设置页面相关
    var initMenuSetting = function () {
        var menuList = $("#menu-list");
        var btnAddMenuItem = $("#btnAddMenuItem");
        var ol = menuList.children().eq(0);
        //        var contextmenuOption = {
        //            target: '#context-menu',
        //            onItem: function (context, e) {
        //                //                switch ($(e.target).data("event")) {
        //                //                    case "delete":
        //                //                        context.remove();
        //                //                        break;
        //                //                }
        //            }
        //        };

        menuList.nestable();

        menuList
            .undelegate(".btn-switch", "click")
            .delegate(".btn-switch", "click", function () {
                var link = $(this);
                var i = link.children();
                var parent = link.closest(".dd3-content");

                if (parent.hasClass("show")) {
                    parent.removeClass("show");
                    i.removeClass("fa-caret-up").addClass("fa-caret-down");
                } else {
                    parent.addClass("show");
                    i.removeClass("fa-caret-down").addClass("fa-caret-up");
                }
            });

        $("#menuForm")
        .AjaxForm({
            submitButton: {
                selector: "#btnSaveMenu",
                loadingText: "正在保存"
            },
            alertTitle: "保存菜单",
            data: function () {
                var postData = [];
                var menuObjs = menuList.nestable('serialize');

                for (var i in menuObjs) {
                    postData.push({ "id": menuObjs[i].id, "pid": 0, "sort": i });
                    RItem(menuObjs[i], postData);
                }

                for (var i = 0; i < postData.length; i++) {
                    var li = menuList.find("li[data-id='" + postData[i].id + "']");
                    var C = li.find("div.c-hidden");
                    var sort = C.children("[name='sort']");
                    var pid = C.children("[name='pid']");
                    var isshow = C.children("[name='isshow']");
                    var chk = li.find("input.chkIsShow");

                    sort.val(postData[i].sort);
                    pid.val(postData[i].pid);
                    isshow.val(chk.is(":checked") ? "true" : "false");
                }

                return this.serializeArray();
            }
        });

        // 递归获取对象
        function RItem(obj, data) {
            if (!obj.children) return;

            for (var i in obj.children) {
                data.push({ "id": obj.children[i].id, "pid": obj.id, "sort": i });
                RItem(obj.children[i], data);
            }
        }

        //        $('#menu-list li.dd-item').contextmenu(contextmenuOption);

        //        btnAddMenuItem.bind("click", function () {
        //            var item = '<li class="dd-item dd3-item" data-id="13">' +
        //			           '    <div class="dd-handle dd3-handle">' +
        //			           '    </div>' +
        //			           '    <div class="dd3-content">' +
        //				       '        <div class="clearfix">' +
        //					   '            <div class="pull-left">' +
        //					   '                <i class="fa fa-link"></i> 未命名' +
        //					   '            </div>' +
        //					   '            <div class="pull-right btn-switch"><i class="fa fa-caret-down"></i></div>' +
        //				       '        </div>' +
        //				       '        <div class="form-body">' +
        //					   '            <div class="form-group row">' +
        //					   '                <div class="col-md-4">' +
        //					   '	                <label>页面名称</label>' +
        //					   '	                <input type="text" name="pagename" class="form-control" placeholder="页面名称" value="未命名">' +
        //					   '                </div>' +
        //					   '                <div class="col-md-4">' +
        //					   '	                <label>页面子名称</label>' +
        //					   '	                <input type="text" name="subtitle" class="form-control" placeholder="页面子名称">' +
        //					   '                </div>' +
        //					   '                <div class="col-md-4">' +
        //					   '	                <label>页面图标</label>' +
        //					   '	                <input type="text" name="icon" class="form-control" placeholder="页面图标" value="fa fa-link">' +
        //					   '                </div>' +
        //					   '            </div>' +
        //					   '            <div class="form-group row">' +
        //					   '                <div class="col-md-12">' +
        //					   '	                <label>链接地址</label>' +
        //					   '	                <div class="input-group">' +
        //					   '		                <span class="input-group-addon tooltips" data-container="body" data-placement="top" data-original-title="是否显示链接">' +
        //					   '			                <input type="checkbox" name="isshow">' +
        //					   '		                </span>' +
        //					   '		                <input type="text" name="url" class="form-control" placeholder="链接地址">' +
        //					   '	                </div>' +
        //					   '                </div>' +
        //					   '            </div>' +
        //					   '            <div class="form-group row">' +
        //					   '                <div class="col-md-12">' +
        //					   '	                <label>页面描述</label>' +
        //					   '	                <textarea class="form-control" name="descr" rows="2" placeholder="页面描述"></textarea>' +
        //					   '                </div>' +
        //					   '            </div>' +
        //					   '            <input type="hidden" name="id">' +
        //					   '            <input type="hidden" name="sort">' +
        //				       '        </div>' +
        //			           '    </div>' +
        //		               '</li>';
        //            item = $(item);
        //            item.contextmenu(contextmenuOption);
        //            ol.append(item);
        //        });

        Metronic.initComponents();
    };

    // 初始化模块功能
    var initModule = function (data) {
        var modules = $("#modules").jstree({
            'plugins': ["wholerow", "checkbox", "types"],
            'core': {
                "themes": {
                    "responsive": false
                },
                'data': data
            },
            "types": {
                "default": {
                    "icon": "fa fa-folder icon-state-warning icon-lg"
                },
                "file": {
                    "icon": "fa fa-file icon-state-warning icon-lg"
                }
            }
        });

        $("#moduleForm")
        .AjaxForm({
            submitButton: {
                selector: "#btnSaveModule",
                loadingText: "正在保存"
            },
            alertTitle: "更新模块状态",
            data: function () {
                var checkedObjs = modules.jstree().get_checked(true);
                var postData = new PostData();

                for (var i in checkedObjs) {
                    if (checkedObjs[i].parent == "#") continue;
                    postData.Add("id", checkedObjs[i].id);
                }

                return postData.GetData();
            }
        });
    };

    return {
        init: function () {
            initMenu();
        },
        initMenuSetting: initMenuSetting,
        initMoudle: initModule
    }
} ();